package com.chy.utilsdemo.jackson.ObjectMapper;

/**
 * 功能：
 * <p>
 * ──────────────────────────────────────────
 * version  变更日期       修改人    修改说明
 * ------------------------------------------
 * V1.0.0   2022/2/16     CHY     初版
 * ──────────────────────────────────────────
 */

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.SneakyThrows;

import java.io.IOException;

/**
 * Jackson ObjectMapper类(com.fasterxml.jackson.databind.ObjectMapper)是使用Jackson解析JSON最简单的方法。
 * Jackson ObjectMapper可以从字符串、流或文件解析JSON，并创建Java对象或对象图来表示已解析的JSON。将JSON解析为Java对象也称为从JSON反序列化Java对象
 * Jackson ObjectMapper也可以从Java对象创建JSON. 从Java对象生成JSON的过程也被称为序列化Java对象到JSON
 * Jackson对象映射器(Object Mapper)可以把JSON解析为用户自定义类对象, 或者解析为JSON内置的树模型的对象
 */
public class ObjectMapperTest {

    public static void main(String[] args) {
        Test1();
        Test2();
    }

    /**
     * 从JSON字符串读取Java对象
     **/
    @SneakyThrows
    static void Test1() {
        ObjectMapper objectMapper = new ObjectMapper();
        String carJson = "{ \"brand\" : \"Mercedes\", \"doors\" : 5 }";
        Car car = objectMapper.readValue(carJson, Car.class);
        System.out.println("brand：" + car.getBrand() + "\t doors：" + car.getDoors());
    }
    /**
     * 把java对象序列化成JSON字符串
     */
    @SneakyThrows
    static void Test2() {
        ObjectMapper objectMapper = new ObjectMapper();
        Car car = new Car();
        car.setBrand("丰田");
        car.setDoors(4);
        String json = objectMapper.writeValueAsString(car);
        System.out.println(json);
    }

}
